#include "entier.h"


entier::entier(int valeur) : nonComplexe(ENTIER){
        this->valeur = valeur;
        this->type = ENTIER;
}

constante* entier::operator+(const constante& c)const{

        switch(c.getType()){
                case constante::ENTIER:
        return new entier(this->valeur + static_cast<const entier&>(c).valeur);
                break;
        }
}

constante* entier::operator*(const constante& c)const{
        switch(c.getType()){
                case constante::ENTIER:
        return new entier(this->valeur * static_cast<const entier&>(c).valeur);
                break;
        }
}

constante* entier::operator-(const constante& c)const{
        switch(c.getType()){
                case constante::ENTIER:
        return new entier(this->valeur - static_cast<const entier&>(c).valeur);
                break;
        }

}

constante* entier::operator/(const constante& c)const{
        switch(c.getType()){
                case constante::ENTIER:
//        return new Rationnel(this->valeur,static_cast<const Entier&>(c).valeur);
        return 0;
                break;
        }

}

constante* entier::operator%(const constante& c)const{
   switch(c.getType()){
       case constante::ENTIER:
        return new entier(valeur % static_cast<const entier&>(c).valeur);
   }
}
constante* entier::operator!()const{
    int a=1;
    for(int i=0;i<valeur-1;i++)
        a*=valeur-i;
    return new Entier(a);
}

constante* entier::operator-()const{
        return new entier(-this->valeur);
}
